import { defineStore } from "pinia";
import { LOGIN_STATUS } from "@/config/cache";
import Cache from "@/utils/cache";
export const useTokenStore = defineStore(
  LOGIN_STATUS,
  () => {
    // token
    const token = ref("");
    function setToken(str: string) {
      token.value = str;
    }

    // 清除用户信息
    function clearToken() {
      token.value = "";
    }

    return {
      token,
      setToken,
      clearToken,
    };
  },
  {
    persist: {
      key: LOGIN_STATUS,
      storage: {
        setItem(key, value) {
          console.log("setItem", "触发缓存");
          // 直接存储 token 字符串值而不是整个对象
          Cache.set(key, value);
        },
        getItem(key) {
          return Cache.get(key);
        },
      },
      // 只序列化和反序列化 token 字段
      serializer: {
        serialize: (value) => {
          // 只存储 token 的值
          return value.token;
        },
        deserialize: (value) => {
          // 从存储中读取时，构造成正确的对象格式
          const tokenValue = JSON.parse(value);
          return { token: tokenValue };
        },
      },
    },
  }
);
